<template>
  <div class="carousel-component">
    <el-carousel 
      :height="高度" 
      :type="类型" 
      :direction="方向" 
      :autoplay="自动播放" 
      :interval="间隔时间" 
      :indicator-position="指示器位置" 
      :arrow="箭头显示" 
      :loop="循环播放"
    >
      <el-carousel-item v-for="(项目, index) in 轮播项目" :key="index">
        <div 
          class="carousel-item" 
          :style="{
            backgroundColor: 项目.背景颜色,
            backgroundImage: 项目.图片地址 ? `url(${项目.图片地址})` : '',
            backgroundSize: 'cover',
            backgroundPosition: 'center'
          }"
        >
          <h3 v-if="项目.标题" class="carousel-title">{{ 项目.标题 }}</h3>
          <p v-if="项目.描述" class="carousel-description">{{ 项目.描述 }}</p>
        </div>
      </el-carousel-item>
    </el-carousel>
  </div>
</template>

<script>
export default {
  name: 'CarouselComponent',
  componentName: '轮播图',
  icon: 'el-icon-picture-outline',
  defaultProps: {
    高度: '200px',
    类型: '',
    方向: 'horizontal',
    自动播放: true,
    间隔时间: 3000,
    指示器位置: '',
    箭头显示: 'hover',
    循环播放: true,
    轮播项目: [
      {
        标题: '标题 1',
        描述: '描述内容 1',
        背景颜色: '#409EFF',
        图片地址: ''
      },
      {
        标题: '标题 2',
        描述: '描述内容 2',
        背景颜色: '#67C23A',
        图片地址: ''
      },
      {
        标题: '标题 3',
        描述: '描述内容 3',
        背景颜色: '#E6A23C',
        图片地址: ''
      }
    ]
  },
  props: {
    高度: {
      type: String,
      default: '200px'
    },
    类型: {
      type: String,
      default: '',
      validator: value => {
        return ['', 'card'].includes(value);
      }
    },
    方向: {
      type: String,
      default: 'horizontal',
      validator: value => {
        return ['horizontal', 'vertical'].includes(value);
      }
    },
    自动播放: {
      type: Boolean,
      default: true
    },
    间隔时间: {
      type: Number,
      default: 3000
    },
    指示器位置: {
      type: String,
      default: '',
      validator: value => {
        return ['', 'outside', 'none'].includes(value);
      }
    },
    箭头显示: {
      type: String,
      default: 'hover',
      validator: value => {
        return ['always', 'hover', 'never'].includes(value);
      }
    },
    循环播放: {
      type: Boolean,
      default: true
    },
    轮播项目: {
      type: Array,
      default: () => [
        {
          标题: '标题 1',
          描述: '描述内容 1',
          背景颜色: '#409EFF',
          图片地址: ''
        },
        {
          标题: '标题 2',
          描述: '描述内容 2',
          背景颜色: '#67C23A',
          图片地址: ''
        },
        {
          标题: '标题 3',
          描述: '描述内容 3',
          背景颜色: '#E6A23C',
          图片地址: ''
        }
      ]
    }
  }
};
</script>

<style scoped>
.carousel-component {
  width: 100%;
  box-sizing: border-box;
}

.carousel-item {
  height: 100%;
  display: flex;
  flex-direction: column;
  justify-content: center;
  align-items: center;
  color: #fff;
  text-align: center;
  padding: 20px;
}

.carousel-title {
  margin: 0 0 10px;
  font-size: 24px;
  text-shadow: 1px 1px 2px rgba(0, 0, 0, 0.5);
}

.carousel-description {
  margin: 0;
  font-size: 16px;
  text-shadow: 1px 1px 2px rgba(0, 0, 0, 0.5);
}
</style>